Early computer systems were controlled by batch operating systems. These systems had limited interaction with users of the system. An operator had to load the job to be run and send the output to a printer. With the advent of time sharing operating systems, such as the IBM System 370, interactive computing became the norm. Time sharing operating systems allowed many users to use the computer's resources simultaneously, so that all users of the system appeared to have their own computer system. All users had their own terminal, which was connected to the central computer system. This terminal typically consisted of a display, keyboard, and a small speaker. To the user, this terminal appeared to be an interactive computer system in its own right.
With the advent of computer systems that allowed truly interactive computer applications came a proliferation of user interfaces. Some of these interfaces were command driven, others were menu driven, but they all only allowed the user to work on only one task or application from a given terminal at a time. There are times when the application displays an important result or needs user intervention of some kind. Even when the executing application program is the only computer task with which the user is dealing, it is sometimes important for the application to seize the user's attention. For example, by the time a lengthy application has completed, such as a database search query, users may have grown weary of waiting and shifted their attention to other matters. To bring the user's attention back to the application that has just completed, applications typically used the speaker on the terminal to emit a tone, which has come to be known as a bell. In another example, users send electronic mail to each other. Since the user might not know when to expect a piece of electronic mail, the user's attention may be elsewhere when the mail arrives. To bring the user's attention to the piece of newly arrived mail, the incoming mail causes the speaker to emit a bell tone.
Today the state of the art for computer systems and user interfaces has advanced beyond the single task interface. Inexpensive personal computers and workstations with powerful graphics processors and multi-tasking operating systems such as IBM Operating System/2 have forever changed the way users interact with computer systems. With these operating systems the user can simultaneously work on many tasks at once, each task being confined to its own window. There may be many windows with active applications running at once. These windows may partially or even completely overlap. In addition, a window may be small, even to the point of being reduced to an icon (a symbol that represents the window), so that the window contents cannot be seen.
When an application program executing in one of the windows requires the user's attention, it still relies on the same method that application programs of the past did: it emits a bell tone using the speaker. The problem is, the tone provides the user with no help in determining which window emitted the bell. This forces the user to search through all the active windows on the display looking for the one that emitted the bell. If the number of windows is large, the emitting window is partially or completely overlapped by another window, or the emitting window has been reduced to a small size or icon, this can cause great frustration and loss of valuable time as the user pursues the elusive bell.
For the foregoing reasons, there is a need for a windowing interface that searches through the jumbled multitude of active windows on the display, informs the user which window requires attention, and optionally brings that window to the foreground.